package file.it.d1_file;

import java.io.File;
import java.util.Arrays;

/**
 * 目标：掌握File提供的遍历文件夹的方法
 */
public class Test4 {
    public static void main(String[] args) {
        // 1.public String[] list(): 获取当前目录下所有的“一级文件名称”到一个字符串数组中去返回
        File f1 = new File("D:/soft");
        String[] names = f1.list();
        for (String name : names) {
            System.out.println(name);
        }

        // 2.public File[] listFile(): (重点)获取当前目录下所有的“一级文件对象”到一个文件对象数组中去返回（重点）
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }

        /**
         * 使用listFiles方法时的注意事项
         * ① ② ③ ④ ⑤
         *  ④ 当主调是一个文件夹，且里面有隐藏文件时，将里面所有的文件和文件夹的路径放在File数组中返回，包含隐藏文件
         *  ⑤ 当主调是一个文件夹，但是没有权限访问该文件夹时，返回null
         */

        // ① 当主调是文件，或者路径不存在时，返回null
        File f = new File("D:/soft1");
        File[] files1 = f.listFiles();
        System.out.println(files1);

        // ② 当主调是空文件夹时，返回一个长度为0的数组
        File f2 = new File("D:/soft/aaa");
        File[] files2 = f2.listFiles();
        System.out.println(Arrays.toString(files2));

        // ③ 当主调是一个有内容的文件夹时，将里面所有一级文件和文件夹的路径放在File数组中返回
        File f3 = new File("D:/soft");
        File[] files3 = f3.listFiles();
        System.out.println(Arrays.toString(files3));

    }
}




